In the field of computers a user interface can be understood as a feature by means of which a user can interact with a computer apparatus. For example, a user interface can be used for output of content and/or for an input by a user. A computer terminal can comprises a display for presenting graphical user interfaces (UI) for a user. The display can comprise touchscreen features enabling input through the display screen. Input may also be provided by means of a keypad, sensors or the like. Output and/or input can also be based e.g. on audio output/input arrangements, voice recognition and so forth. A user interface can be presented by a terminal device connected to the internet for example based on data fetched from a local memory of the terminal and/or downloaded from a server connected to the internet and providing a web application.
A traditional design paradigm for user interfaces has been prewritten Document Object Model (DOM) structures using HyperText Markup Language (HTML) with extra notation for JavaScript libraries to hook on to attach dynamic behavior. A more recent design paradigm is to have pure functions that read objects data (blueprint) and generate DOM with dynamic behavior based on the object data. The programming paradigm for reactive programming, or asynchronous dataflow programming, is often referred to as Functional reactive programming (FRP). FRP uses the building blocks of functional programming (e.g. map, reduce, filter), and has been used for programming graphical user interfaces (GUIs), robotics, and music, aiming to simplify these problems by explicitly modeling time. An example of such reactive programming techniques for generating graphical user interfaces is known by the name “React”.
Reactive programming techniques have been created to enable developers to build large applications with data that changes. When data updates, the user interface is automatically updated to reflect that based on the locally stored data. In reactive UI control information on results of performed functions are stored in a browser cache of the terminal. Information of a particular event is stored in a data object. The data object can then be used to inform the UI control of changes resulting from the functions so that the UI control can then react accordingly. Thus at least a part of the control of what is to be displayed based on data received from a server can be provided locally at the user device based on data objects stored in a browser cache at the user device including information about previous events. This programming technique can be used in generating the “view” part of model-view-controller (MVC) development paradigm.
The recent developments in the field of user interface control, in particular the reactive programming, are gaining popularity in particular in the field of displaying content downloaded from the internet. However, the inventor has recognized that the reactive programming technologies may have not been utilized to their full potential. There may also be certain unresolved issues in some specific applications, for example where there is a wish to generate an instance of a user interface in at least one other device. Thus it is the aim of the current invention to provide new and improved features in generating user interfaces.
It is noted that the herein discussed matters are not limited to any particular type of computerized system but may occur in any system where user interfaces are generated based on reactive programming.